﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using HS.Business.Security;
using HS.Domain.EF;
using Newtonsoft.Json;
using HS.Presentation.Web.Extensions;
using HS.Presentation.Web.Models;
using System.Globalization;

namespace HS.Presentation.Web.Controllers
{
    public class SolicitudServicioController : Controller
    {
        [HttpGet]
        public ActionResult Search()
        {
            return View();
        }

        [HttpGet]
        public ActionResult Edit(int? id)
        {
            id = 1;
            SolicitudServicioBusiness obj = new SolicitudServicioBusiness();

            if (id == null)
            {
                ViewBag.State = 1;

                var codigo = (obj.GetMaxCodigo() + 1).ToString();

                return View(new SolicitudServicio()
                {
                    CodigoRegistro = codigo,
                    RowStatus = true
                });
            }
            else
            {
                ViewBag.State = 2;

                return View(obj.GetEntityByPK(id, true));
            }
        }

        [HttpGet]
        public ActionResult Details(int id)
        {
            return View(new SolicitudServicioBusiness().GetEntityByPK(id, true));
        }

        [HttpPost]
        [ForceModelParse(typeof(SolicitudServicioVM))]
        public ActionResult Create(SolicitudServicioVM model)
        {
            SolicitudServicioBusiness objBusiness = new SolicitudServicioBusiness();
            SolicitudServicio obj = new SolicitudServicio()
            {
                //IdSolicitudServicio = model.IdSolicitudServicio,
                //Codigo = model.Codigo,
                //Nombre = model.Nombre,
                //Descripcion = model.Descripcion,
                //FechaInicio = model.FechaInicio,
                //HoraInicio = model.HoraInicio,
                //FechaTermino = model.FechaTermino,
                //HoraTermino = model.HoraTermino,
                //IdEstadoGeneral = model.IdEstadoGeneral,
                //EsVigente = model.EsVigente,
                //Opciones = model.Opciones,
                //Prioridad = model.Prioridad,
                //EsAcumulable = model.EsAcumulable,
                //IdCampania = model.IdCampania,
                //RowStatus = model.RowStatus,
                //Condiciones = model.Condiciones,
                //Beneficios = model.Beneficios
            };

            //objBusiness.Create(obj);

            return View("Index");
        }

        [HttpPost]
        [ForceModelParse(typeof(SolicitudServicioVM))]
        public ActionResult Edit(SolicitudServicioVM model, int SolicitudServicioId)
        {
            SolicitudServicioBusiness objBusiness = new SolicitudServicioBusiness();
            SolicitudServicio obj = new SolicitudServicio()
            {
                //IdSolicitudServicio = model.IdSolicitudServicio,
                //Codigo = model.Codigo,
                //Nombre = model.Nombre,
                //Descripcion = model.Descripcion,
                //FechaInicio = model.FechaInicio,
                //HoraInicio = model.HoraInicio,
                //FechaTermino = model.FechaTermino,
                //HoraTermino = model.HoraTermino,
                //IdEstadoGeneral = model.IdEstadoGeneral,
                //EsVigente = model.EsVigente,
                //Opciones = model.Opciones,
                //Prioridad = model.Prioridad,
                //EsAcumulable = model.EsAcumulable,
                //IdCampania = model.IdCampania,
                //RowStatus = model.RowStatus,
                //Condiciones = model.Condiciones,
                //Beneficios = model.Beneficios,
            };

            //objBusiness.Edit(obj, SolicitudServicioId);

            return View("Index");
        }

        [HttpPost]
        public ActionResult GetEntities(int? idSolicitudServicio, string codigoRegistro, bool? rowStatus)
        {
            var objResult = new SolicitudServicioBusiness()
                                .GetEntities(idSolicitudServicio, codigoRegistro, rowStatus);

            var model = JsonConvert.SerializeObject(objResult, new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore });
            var modelResult = Json(JsonConvert.DeserializeObject(model, typeof(List<SolicitudServicio>)));

            return modelResult;
        }
    }
}
